//
//  CCHomeTableViewController.swift
//  CC-SinaWeibo
//
//  Created by Chenchen on 16/1/30.
//  Copyright © 2016年 Chenchen. All rights reserved.
//

import UIKit

import AFNetworking
import SVProgressHUD

class CCHomeTableViewController: CCJiChuTableViewController {
    
    // 模型数组
    private lazy var statuses = [CCStatus]()
    
    // cell ID
    private let homeCellId = "homeCellId"
    
    override func viewDidLoad() {
        super.viewDidLoad()
        if !userLogin  {
            visitroLoginView?.setupUIWithInfo(nil, tipText: "关注一些人，回这里看看有什么惊喜")
            // 注册cell
            return
        }
        prepareForTableView()
        
        // 加载数据
        loadData()
        
    }
    
    private func prepareForTableView() {
        // 注册cell
        tableView.registerClass(CCStatusCell.self, forCellReuseIdentifier: homeCellId)
        // 设置cell的高度
        //       tableView.rowHeight = 250
        // 设置预估行高
        tableView.estimatedRowHeight = 300
        //        // 设置自动计算行高
        tableView.rowHeight = UITableViewAutomaticDimension
        // 设置分割线的样式
        tableView.separatorStyle = .None
        // 添加系统下拉刷新控件
        refreshControl = UIRefreshControl()
        // 添加触发事件
        refreshControl?.addTarget(self, action: "loadData", forControlEvents: .ValueChanged)
    }
    
    // MARK: 加载数据
    @objc private func loadData() {
        // url
        let urlStr = "https://api.weibo.com/2/statuses/home_timeline.json"
        // token
        guard let token = CCAccounVeiwModel.sharedAccountViewModel.access_token else {  // 进来说明 access_token 没有登录
            // 提示弹窗
            SVProgressHUD.showErrorWithStatus("不登录玩个毛线")
            return
        }
        
        // parameters
        let parameters = ["access_token": token]
        // AFN
        let AFN = AFHTTPSessionManager()
        // 转动小菊花
        refreshControl?.beginRefreshing()
        // 发起get请求
        AFN.GET(urlStr, parameters: parameters, progress: nil, success: { (_, result) -> Void in  // 成功
            // 停止动画
            self.refreshControl?.endRefreshing()
            // 1.将result转换成字典类型
            guard let dict = result as? [String: AnyObject] else {
                SVProgressHUD.showErrorWithStatus("数据类型不匹配")
                return
            }
            
            // 2.在字典中通过 "statuses"这个key 来去获取微博数组数据
            guard let array = dict["statuses"] as? [[String: AnyObject]] else {
                SVProgressHUD.showErrorWithStatus("数据类型不匹配")
                return
            }
            
            // 到这里说明 数据类型已经匹配了,实例化数据
            var tempArray = [CCStatus]()
            
            // 3.遍历数组,获取单个的字典对象
            for item in array {
                //                print(item["text"])
                // 4.字典转模型
                let s = CCStatus(dict: item)
                // 5.将模型数据添加到数组中
                tempArray.append(s)
            }
            // 保存临时数组
            self.statuses = tempArray
            // 刷新tableveiw
            self.tableView.reloadData()
            
            }) { (_, error) -> Void in  // 失败
                SVProgressHUD.showErrorWithStatus("WIFI君已死,请使用4G君")
                print(error)
        }
    }
}

// MARK: tableView的数据源方法
extension CCHomeTableViewController {
    // 有多少行
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statuses.count
    }
    // 每行cell的样式
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        // 注册cell
        let cell = tableView.dequeueReusableCellWithIdentifier(homeCellId,forIndexPath: indexPath) as! CCStatusCell
        // cell内的文字 ,是一个懒加载视图
        //        cell.textLabel?.text = statuses[indexPath.row].user?.name
        cell.status = statuses[indexPath.row]
        // 返回
        return cell
        
    }
}







